iT邦幫忙

0

Day 23~25|Discord × Google Calendar Bot:行程查詢、刪除與提醒功能

  • 分享至 

  • xImage
  •  

一、實作目標

前面的開發已經完成 Google Calendar API 串接與新增行程功能。這三天接著完成:

  • Day 23:建立 /list 指令,查詢行程。
  • Day 24:建立 /delete 指令,刪除指定行程。
  • Day 25:整合 Google Calendar 原生提醒。

專案使用 Node.js、discord.js、Google Calendar API 與 OAuth 2.0,目前已在 Discord 測試伺服器完成實際操作驗收。

二、實作過程

Day 23:建立 /list 行程查詢功能

透過 /list 指令查詢 Google Calendar 行程,並在 Discord 顯示行程名稱、台灣時間及事件 ID,方便後續指定要刪除的行程。

實作重點:

  1. 建立 /list Slash Command,將指令交給獨立模組處理。
  2. 使用 Google Calendar events.list() 取得行程資料。
  3. 整理行程名稱、台灣時間與完整事件 ID。
  4. 將查詢結果回傳至 Discord,沒有行程時顯示清楚提示。

預設查詢未來 7 天,顯示最早 5 筆;也能調整查詢天數與顯示筆數:

/list days:7 limit:5

Day 23:list 指令實作

圖 1:讀取查詢參數,呼叫 Calendar 服務,將行程名稱、時間與事件 ID 整理成 Discord 回覆。

Day 23:Discord 查詢結果

圖 2:真實 Discord 查詢結果,包含本次新增的測試行程與事件 ID。

Day 24:建立 /delete 行程刪除功能

完成查詢後,接著使用事件 ID 指定要刪除的行程,避免相同標題造成誤判。

刪除前先顯示預覽資訊,只有使用者設定 confirm:true 時,才會真正呼叫 Google Calendar API 執行刪除。

實作重點:

  1. 建立 /delete Slash Command,讀取事件 ID。
  2. 先取得行程名稱與時間,提供刪除預覽。
  3. 檢查行程建立者,僅允許刪除自己在同一伺服器透過 Bot 建立的單筆非重複行程。
  4. 確認後呼叫 events.delete(),並將結果回覆至 Discord。

操作方式:

/delete event_id:行程ID

/delete event_id:相同ID confirm:true

Day 24:delete 指令實作

圖 3:依 confirm 參數選擇預覽或執行刪除,避免直接誤刪行程。

Day 24:Discord 刪除結果

圖 4:Discord 先顯示刪除預覽,確認後回覆刪除成功。

Day 25:整合 Google Calendar 原生提醒

最後加入 Google Calendar 原生提醒設定,不另建立 Discord 定時通知系統。

新增事件時,以 reminders.useDefault:false 搭配 popup 與提前分鐘數,將提醒設定儲存在 Google Calendar。

實作重點:

  1. 在 /add 增加 reminder 參數。
  2. 驗證提醒分鐘數,預設提前 10 分鐘,可接受 0~40320 的整數。
  3. 建立事件時寫入原生 popup 提醒設定。
  4. 讀回 Google API 資料,並在 Google Calendar 事件詳細資料中確認設定。

本次實際操作指定提前 15 分鐘提醒:

/add title:讀書 date:20271231 time:1830 reminder:15

Day 25:原生提醒設定實作

圖 5:驗證提醒分鐘數,並在新增事件的 API 資料中加入 popup 設定。

Day 25:Google Calendar 提醒設定結果

圖 6:Google Calendar 事件詳細資料顯示「15 分鐘前」,確認提醒設定已成功寫入。

這張截圖驗證的是提醒設定,沒有驗證通知實際彈出或成功發送。實際通知仍需 Google Calendar 與使用裝置允許通知。

三、測試與驗收

本次共 111 項自動測試全部通過,0 項失敗,涵蓋查詢參數、空清單、分頁、時區、刪除確認、建立者檢查、API 錯誤及提醒分鐘數邊界。自動測試使用模擬 API 或攔截 SDK 傳輸,不代表 111 次真實操作。

另外完成真實 Discord 與 Google Calendar 操作驗收:

  • 新增兩筆測試行程,分別驗證指定 15 分鐘與預設 10 分鐘提醒。
  • /list 成功查詢行程,時間與事件 ID 正確。
  • /delete 先預覽,確認後刪除專用測試行程。
  • 刪除後重新查詢,Google API 與清單都確認該事件已移除。
  • 再次操作已刪除的 ID 時顯示清楚提示,後續 /ping 仍正常。
  • Google Calendar 畫面確認提前 15 分鐘提醒設定。

四、學習心得

這三天將原本只有新增行程的 Bot,擴充為可以查詢、刪除與設定提醒的行程管理工具。

查詢時保留事件 ID,讓後續刪除有明確依據;刪除加入預覽與確認,降低誤操作;提醒則利用 Google Calendar 原生能力,讓 Bot 不需要額外維護通知排程。

接下來 Day 26~27 將整理錯誤處理與模組職責,進一步改善專案的穩定性及可維護性。


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言